﻿using Caliburn.Micro;
using SD.Infrastructure.WPF.Caliburn.Aspects;
using System;
using System.Collections.Generic;
using SlamDunk.ValueObjects.Enums;

namespace SlamDunk.MES.Presentation.Models.NotifyModels
{
    /// <summary>
    /// 库存明细自定义
    /// </summary>
    public class StockInOrderDetailNm : PropertyChangedBase
    {
        public StockInOrderDetailNm()
        {

        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="materialId">物料定义Id</param>
        /// <param name="materialName">物料名称</param>
        /// <param name="materialNo">物料编号</param>
        /// <param name="materialLotId">物料批次Id</param>
        /// <param name="quantity">数量</param>
        /// <param name="sort">排序</param>
        /// <param name="description">描述</param>
        /// <param name="relatedBarcodeNos">库存单据条码编号集</param>
        /// <param name="supplierId">供应商Id</param>
        ///  <param name="supplierName">供应商名称</param>
        /// <param name="productionBatchNo">生产批号</param>
        /// <param name="producedDate">生产日期</param>
        /// <param name="guaranteePeriod">保质期</param>
        /// <param name="expiredDate">过期日期</param>
        /// <param name="receptionDate">接收日期</param>
        /// <param name="specification">规格</param>
        /// <param name="materialSourceType">物料来源</param>
        /// <param name="hasPrintedBarcodeName">是否已打印名称</param>
        /// <param name="barcodeModeTypeName">是否唯一码名称</param>
        /// <param name="HasPrintedBarcode">是否已打印</param>
        /// <param name="BarcodeModeType">是否唯一码</param>
        /// <param name="ButtonName">操作按钮名称</param>
        /// <param name="stockOrderDetailId">单据明细Id</param>
        /// <param name="standardUnitNo">单位</param>
        public StockInOrderDetailNm(Guid? materialId, string materialName, string materialNo, Guid? materialLotId,
            decimal? quantity, int sort, string description, List<string> relatedBarcodeNos, Guid? supplierId, string supplierName,
            string productionBatchNo, DateTime? producedDate, TimeSpan? guaranteePeriod, DateTime? expiredDate, DateTime? receptionDate,
            string specification, MaterialSourceType? materialSourceType, string hasPrintedBarcodeName, string barcodeModeTypeName,
            bool? hasPrintedBarcode, bool barcodeModeType, string buttonName, Guid? stockOrderDetailId, string standardUnitNo)
        {
            this.MaterialId = materialId;
            this.MaterialName = materialName;
            this.MaterialNo = materialNo;
            this.MaterialLotId = materialLotId;
            this.Quantity = quantity;
            this.Sort = sort;
            this.Description = description;
            this.RelatedBarcodeNos = relatedBarcodeNos;
            this.SupplierId = supplierId;
            this.SupplierName = supplierName;
            this.ProductionBatchNo = productionBatchNo;
            this.ProducedDate = producedDate;
            this.GuaranteePeriod = guaranteePeriod;
            this.ExpiredDate = expiredDate;
            this.ReceptionDate = receptionDate;
            this.Specification = specification;
            this.MaterialSourceType = materialSourceType;
            this.HasPrintedBarcodeName = hasPrintedBarcodeName;
            this.BarcodeModeTypeName = barcodeModeTypeName;
            this.HasPrintedBarcode = hasPrintedBarcode;
            this.BarcodeModeType = barcodeModeType;
            this.ButtonName = buttonName;
            this.StockOrderDetailId = stockOrderDetailId;
            this.StandardUnitNo = standardUnitNo;
        }
        /// <summary>
        /// 物料定义Id
        /// </summary>
        [DependencyProperty]
        public Guid? MaterialId { get; set; }

        /// <summary>
        /// 物料名称
        /// </summary>
        [DependencyProperty]
        public string MaterialName { get; set; }

        /// <summary>
        /// 物料编号
        /// </summary>
        [DependencyProperty]
        public string MaterialNo { get; set; }

        /// <summary>
        /// 物料批次Id
        /// </summary>
        [DependencyProperty]
        public Guid? MaterialLotId { get; set; }

        /// <summary>
        /// 数量
        /// </summary>
        [DependencyProperty]
        public decimal? Quantity { get; set; }

        /// <summary>
        /// 排序
        /// </summary>
        [DependencyProperty]
        public int Sort { get; set; }

        /// <summary>
        /// 描述
        /// </summary>
        [DependencyProperty]
        public string Description { get; set; }

        /// <summary>
        /// 库存单据条码编号集
        /// </summary>
        [DependencyProperty]
        public List<string> RelatedBarcodeNos { get; set; }

        /// <summary>
        /// 供应商Id
        /// </summary>
        [DependencyProperty]
        public Guid? SupplierId { get; set; }

        /// <summary>
        /// 供应商名称
        /// </summary>
        [DependencyProperty]
        public string SupplierName { get; set; }

        /// <summary>
        /// 生产批号
        /// </summary>
        [DependencyProperty]
        public string ProductionBatchNo { get; set; }

        /// <summary>
        /// 生产日期
        /// </summary>
        [DependencyProperty]
        public DateTime? ProducedDate { get; set; }

        /// <summary>
        /// 保质期
        /// </summary>
        [DependencyProperty]
        public TimeSpan? GuaranteePeriod { get; set; }

        /// <summary>
        /// 过期日期
        /// </summary>
        [DependencyProperty]
        public DateTime? ExpiredDate { get; set; }

        /// <summary>
        /// 接收日期
        /// </summary>
        [DependencyProperty]
        public DateTime? ReceptionDate { get; set; }

        /// <summary>
        /// 规格
        /// </summary>
        [DependencyProperty]
        public string Specification { get; set; }

        /// <summary>
        /// 物料来源
        /// </summary>
        [DependencyProperty]
        public MaterialSourceType? MaterialSourceType { get; set; }

        /// <summary>
        /// 是否已打印名称
        /// </summary>
        [DependencyProperty]
        public string HasPrintedBarcodeName { get; set; }

        /// <summary>
        /// 是否唯一码名称
        /// </summary>
        [DependencyProperty]
        public string BarcodeModeTypeName { get; set; }

        /// <summary>
        /// 是否已打印
        /// </summary>
        [DependencyProperty]
        public bool? HasPrintedBarcode { get; set; }

        /// <summary>
        /// 是否唯一码
        /// </summary>
        [DependencyProperty]
        public bool BarcodeModeType { get; set; }

        /// <summary>
        /// 操作按钮名称
        /// </summary>
        [DependencyProperty]
        public string ButtonName { get; set; }

        /// <summary>
        /// 单据明细Id
        /// </summary>
        [DependencyProperty]
        public Guid? StockOrderDetailId { get; set; }

        /// <summary>
        /// 单位
        /// </summary>
        [DependencyProperty]
        public string StandardUnitNo { get; set; }

    }
}
